/*
 * Copyright (c) 2023, 2024,yzc.cn All rights reserved.
 *
 */
package cn.yzc.singleton_pattern;

/**
 * <p>Project: springbootDemo - LazySingleton</p>
 * <p>Powered by yzc On 2024-03-19 16:53:25</p>
 * <p>描述：<p>
 *
 * @author yzc [youzhicheng0415@163.com]
 * @version 1.0
 * @since 17
 */
//单例模式———— 懒汉模式
public class LazySingleton {
    //声明变量
   private static volatile LazySingleton instance = null;

   //私有构造方法
   private LazySingleton(){};
   //对外提供公共的访问方式
   public static LazySingleton getInstance(){
       //第一次判断，如果instance的值不为null，不需要抢占锁，直接返回对象
       if (instance == null) {
           synchronized (LazySingleton.class) {
               //第二次判断
               if (instance == null) {
                   instance = new LazySingleton();
               }
           }
       }
       return instance;
   }
}
